Computers are typically programmed by having humans enter a high level representation of the commands that the computer is to execute. The high level representation can take many forms. For example, programs can be written by entering statements in a source code language such as C or Cobol. Knowledge-based computer development systems allow users (known as "knowledge engineers") to program the computer by entering data which defines interrelated rules, frames, objects and "knowledge" at a much higher level than is typical in traditional source code. Object-based systems are similar knowledge-based systems in the complex relationships between objects. Regardless of the form of the input by the user, further processing by the computer system is usually necessary before an executable program results. The processing normally proceeds in stages or passes with the source input being modified through one or more intermediate representations. Depending on the particular program, the final output may be executable object code or interpretable code. In the case of knowledge-based or object-based computer development systems, the processing is extensive and may require a large amount of processing time. Therefore, it is important that the processing techniques be as efficient as possible.
One approach to improving the efficiency of building knowledge-based systems is to provide an incremental capability for the development environment of the knowledge-based building shell. In this way, a knowledge engineer would be able to make changes incrementally to an existing knowledge base, without having to reprocess existing information that is unaffected by the changes. This increases the productivity of the knowledge engineer and is conducive to rapid prototyping of knowledge-based systems.
The task of building a knowledge base that is solely comprised of unrelated entities incrementally is trivial. On the other hand, it is difficult to incorporate into a system the ability to handle incremental changes, if it is required to process entities that are related.